package top.melody.ecommerce.platform.api.domain.account;

import java.io.Serializable;

import top.melody.ecommerce.common.util.reflect.ReflectUtil;
import top.melody.ecommerce.platform.handler.enums.AccountType;
import top.melody.ecommerce.platform.handler.enums.ActStatus;
import top.melody.ecommerce.platform.handler.enums.GenderType;
import top.melody.ecommerce.platform.handler.enums.ValidStatus;

import java.util.Date;


public class Account implements Serializable {
    /* 主键自增 */
    private Integer accountId;
    /* 用户名(登录名,唯一索引) */
    private String userId;
    /* 用户手机号(不能重复，唯一) */
    private String accountMobile;
    /* 用户邮箱(不能重复，唯一,但是数据库不做唯一控制) */
    private String accountEmail;
    /* 登录密码 */
    private String accountPassword;
    /* 昵称 */
    private String screenName;
    /* 用户图像(URL) */
    private String accountPic;
    /* 用户类型：个人：PERSONAL；生产者：ENTERPRISE */
    private AccountType accountType;
    /*真实姓名*/
    private String accountRealName;
    /*性别*/
    private GenderType gender;
    /*生日*/
    private Date birthday;
    /*省(直辖市)ID，关联BASE_REGION表主键*/
    private Integer provinceId;
    /*市(区)ID,关联BASE_REGION主键*/
    private Integer cityId;
    /*备注*/
    private String memo;
    /* 有效：VALID;无效:INVALID */
    private ValidStatus validStatus;
    /* 已删除：Y;未删除：N */
    private ActStatus removeStatus;
    /* 创建时间 */
    private Date createDate;
    /* 最近更新时间 */
    private Date updateDate;

    public Account() {

    }

    public Account(Integer accountId, String userId, String accountMobile, String accountEmail, String accountPassword, String screenName, String accountPic, AccountType accountType,
                   String accountRealName, GenderType gender, Date birthday, Integer provinceId, Integer cityId, String memo, ValidStatus validStatus, ActStatus removeStatus, Date createDate, Date updateDate) {
        this.accountId = accountId;
        this.userId = userId;
        this.accountMobile = accountMobile;
        this.accountEmail = accountEmail;
        this.accountPassword = accountPassword;
        this.screenName = screenName;
        this.accountPic = accountPic;
        this.accountType = accountType;
        this.validStatus = validStatus;
        this.removeStatus = removeStatus;
        this.createDate = createDate;
        this.updateDate = updateDate;
        this.accountRealName = accountRealName;
        this.gender = gender;
        this.birthday = birthday;
        this.provinceId = provinceId;
        this.cityId = cityId;
        this.memo = memo;
    }


    public Integer getAccountId() {
        return accountId;
    }

    public void setAccountId(Integer accountId) {
        this.accountId = accountId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getAccountMobile() {
        return accountMobile;
    }

    public void setAccountMobile(String accountMobile) {
        this.accountMobile = accountMobile;
    }

    public String getAccountEmail() {
        return accountEmail;
    }

    public void setAccountEmail(String accountEmail) {
        this.accountEmail = accountEmail;
    }

    public String getAccountPassword() {
        return accountPassword;
    }

    public void setAccountPassword(String accountPassword) {
        this.accountPassword = accountPassword;
    }

    public String getScreenName() {
        return screenName;
    }

    public void setScreenName(String screenName) {
        this.screenName = screenName;
    }

    public String getAccountPic() {
        return accountPic;
    }

    public void setAccountPic(String accountPic) {
        this.accountPic = accountPic;
    }

    public AccountType getAccountType() {
        return accountType;
    }

    public void setAccountType(AccountType accountType) {
        this.accountType = accountType;
    }

    public ValidStatus getValidStatus() {
        return validStatus;
    }

    public void setValidStatus(ValidStatus validStatus) {
        this.validStatus = validStatus;
    }

    public ActStatus getRemoveStatus() {
        return removeStatus;
    }

    public void setRemoveStatus(ActStatus removeStatus) {
        this.removeStatus = removeStatus;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public Date getUpdateDate() {
        return updateDate;
    }

    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }

    public String getAccountRealName() {
        return accountRealName;
    }

    public void setAccountRealName(String accountRealName) {
        this.accountRealName = accountRealName;
    }

    public GenderType getGender() {
        return gender;
    }

    public void setGender(GenderType gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Integer getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(Integer provinceId) {
        this.provinceId = provinceId;
    }

    public Integer getCityId() {
        return cityId;
    }

    public void setCityId(Integer cityId) {
        this.cityId = cityId;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    @Override
    public String toString() {
        return ReflectUtil.fieldsToString(this);
    }
}
